package zuoye1;

import zuoye1.*;

import java.util.ArrayList;

public class Test1 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        ArrayList<Person>  list1  =new ArrayList();
        ArrayList<Student>  list2  =new ArrayList();
        ArrayList<JavaStudent>  list3  =new ArrayList();
        ArrayList<UIStudent>  list4  =new ArrayList();
        ArrayList<Teacher>  list5  =new ArrayList();
        ArrayList<JavaTeacher>  list6  =new ArrayList();
        ArrayList<UITeacher>  list7  =new ArrayList();


        //print1,阔以接受所有的list合集
        print1(list);
        print1(list1);
        print1(list2);
        print1(list3);
        print1(list4);
        print1(list5);
        print1(list6);
        print1(list7);

        //print2，阔以接受除了String的list，其他的都可以接受
        print2(list1);
        print2(list2);
        print2(list3);
        print2(list4);
        print2(list5);
        print2(list6);
        print2(list7);

        //print3 ,阔以接受所有学生类的list
        print3(list2);
        print3(list3);
        print3(list4);

        //print4，只可以接受JAVA学员的父类和本类
        print4(list1);
        print4(list2);
        print4(list3);








    }
    //参数可以接收任何泛型的ArrayList参数
    public static void print1(ArrayList<?extends Object> list){}

    //参数可以接收任何Person及其子类泛型的ArrayList参数
    public static void print2(ArrayList<? extends Person> list){}

    //要求：参数可以接收任何Student及其子类泛型的ArrayList参数
    public static void print3(ArrayList<?extends Student> list){}

    //要求：参数可以接收任何Java学员，及其父类泛型的ArrayList参数
    public static void print4(ArrayList<?super JavaStudent> list){}


}
